// 1. 安装express-session
// 2. 导入express-session模块
const expressSession = require('express-session');
// 3. 导入express模块
const express = require('express');
// 4. 创建express对象
const app = express();
// 5. 调用并配置session中间件
    // 5.1 参数："name" = 设置cookie的name，默认值是：connect.sid
    // 5.2 参数："secret" = 参与加密的字符串（又称签名）
    // 5.3 参数："saveUninitialized" = 是否为每次请求都设置一个cookie用来存储
    // 5.3 参数："resave" = 强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false
    // 5.4 参数："cookie" = 存储到cookie的相关配置
        // 5.4.1 参数："httpOnly" 开启后,前端无法通过 JS 操作
        // 5.4.2 参数："maxAge"  控制 sessionID 的过期时间
app.use(expressSession({
    secret:"1208",
    saveUninitialized:false,
    resave:true,
    cookie:{
        httpOnly:true,
        maxAge:1000*60
    }
}))
    
//s%3A2nIXeqBnukWP4F_9qCiiUTo7bEnznFZm.%2BJgM%2FCFMfMYuTuac8JzrWLhwqObyUAxNp48aeGM8Coc

// 6 配置get路由 - 设置session
app.get('/setSession',(req,res)=>{
    // 6.1 将数据存入session的自定义属性内 - req.session.name = value
    req.session.name = 'admin';
    // 6.2 返回响应
    res.send('设置成功');
});
   
// 7 配置get路由 - 获取session
app.get('/getSession',(req,res)=>{
    // 7.1 获取session - req.session.name
    console.log(req.session.name);
    // 7.2 返回响应
    res.send('获取成功用户名：'+req.session.name);
});
    
// 8. 配置get路由 - 删除session
app.get('/removeSession',(req,res)=>{
     // 8.1 删除session - req.session.destroy(callback)
     req.session.destroy(()=>{
         res.send('删除成功');
     })
        // 8.1.1 在回调中返回响应
});
   
// 9 监听端口服务
app.listen(80,()=>{
    console.log("启动成功");
})